iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0

當前大家最為熟知的大型語言模型(Large Language Model,簡稱LLM)包括ChatGPT、Gemini、DeepSeek等,他們具有非常強大的運算、語言表現能力,在這些能力背後,其實是靠很多基礎自然語言處理技術(NLP)的支撐。

程式如何去理解並處理人類的語言,又是怎麼去組織語言回覆使用者的需求和問題,都是當今大家非常好奇,且持續學習、追蹤的議題。

在這30天內,我將會去探索AI、機器學習、深度學習跟語言學之間的連結與應用,動機是出自於本身為學習語言學的背景,因此我想要摸索如何透過語言學這門學問,讓我們能用程式語言更好地去處理人類的語言,也就是讓機器更能夠去抓出人類語言細膩之處,進而有更好的表現。

第一天會想要從Regular Expression開始介紹,其實是因為這個東西算是我在踏入自然語言處理(NLP)這個學門的第一印象(最初記憶...?)。由此可知,Regular Expression是NLP當中,基本中的基本,以下就來帶大家認識Regular Expression~~(我也順便複習一下😁)

Regular Expression是什麼?

Regular Expression,中文稱作正規表達式,或是正規表示式,是一種有規則地利用代數符號,來表示、代表字串(string)的方式。簡單來說,我們可以利用Regular Expression,在茫茫文海當中找出我們想要看的字詞。
舉個例子,假設今天你要比較不同劇本(如下面的對話)當中,角色對話所佔的比例,你就可以用Regular Expression寫出你要找出的字串模式(pattern)。

今天是一個晴朗的日子,
小明放學後回到家後先跟阿公打了招呼:「阿公,我回來了」。
「你回來了啊」,小明阿公聽到後回覆。
小明聞到廚房飄來的香氣,肚子咕嚕咕嚕地叫了起來。

以這個例子而言,想要找出的對話字串模式,可能會是劇本當中上下引號中間包含文字(「...」)這種組合。透過Regular Expression,我們就可以看劇本當中這種組合出現的次數,並去做進一步的比較。

使用Regular Expression

在實際使用Regular Expression之前,必須先稍微熟悉一下他的基本符號,因爲這些符號是構成搜尋模式的基礎。以下為一些基本的符號:

  • . : 指任意符號字元(除了換行符號)
  • *: 指前一個字元符號有零或以上的次數
  • + : 指前一個字元符號有一或以上的次數
  • ? : 指前一個字元符號有零或一的次數
  • [] : 匹配中括號中任一字元
  • | : 代表「或」,例如:(A|B)
  • () : 通常用括號表示特定分組模式
  • - : 匹配中範圍內任一字元
  • ^:
    1.若放在中括號內開頭[^],代表不包含後面的字元
    2.標示句子的開頭
  • $ : 標示句子的結尾
  • \w : 任何字元或數字
  • \W : 任何非字元或數字
  • \d : 任何數字
  • \D : 任何非數字
  • \b : 標示字的邊界
  • \B : 標示非字的邊界
  • \s : 空白
  • \S : 非空白
  • {n} : 指前一字元符號出現的次數
  • \ : 有些符號,像是.,在Regular Expression中有特殊用途,如果我們想要用它最單純的本身,就要加上\
  • \n : 換行

這些只是一些基本的符號規則,還有其他符號,這邊就不一一贅述,歡迎各位多多探索,網路上有提供很多Cheat Sheet可以讓我們參考!

若要練習使用Regular Expression,可參考regex101這個網站(點我進入)。
我們可以在裡面放入想要探索的文本,並嘗試用不同符號來抓取出我們想要的字串。若是忘記一些符號的規則,網站右下角也有提供Quick Reference供我們參考。

現在就來試試吧~~

這邊回到上面我舉的例子,當我們要在這個劇本當中找出角色的對話,首先先把這小段劇本貼入TEST STRING的欄位,接著就可以在上方欄位下這個指令:

「.+」

首先最基本的就是上下引號,接著是上下引號內要放入的符號,因為引號內會是角色說的話,所以可以運用.這個代表任意字元,再加上+加號,代表任意字元出現一次或以上,也就是一段話。

這只是一個簡單的例子,大家可以嘗試看看用更複雜的文本,尋找更精細的pattern!!


下一篇
Day 2 - Finite State Automata (FSA)
系列文
AI、機器學習以及深度學習的語言學應用2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言